using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// Summary description for ubb
/// </summary>
public class ubb
{
    public string GetUbb(string o)
    {
        return ChkString(FormatStr(o));
    }

    public string FormatStr(string fString)
    {
        //fString = fString.Replace("<", "&lt;");
        //fString = fString.Replace(">", "&gt;");
        fString = fString.Replace(Convert.ToString(13), "");
        fString = fString.Replace(Convert.ToString(10) + Convert.ToString(10), "</p><p>");
        fString = fString.Replace("\r", "<br/>");
        //fString = fString.Replace(" ", "&nbsp");
        return fString;
    }

    public string doCode(string fString, string fOTag, string fCTag, string fROTag, string fRCTag)
    {
        fString = fString.Replace(fOTag, fROTag);
        fString = fString.Replace(fCTag, fRCTag);
        return fString;
    }

    public string ChkString(string fString)
    {
        fString = fString.Trim();
        if (fString == "")
        {
            fString = " ";
            return fString;
        }
        fString = doCode(fString, "[b]", "[/b]", "<b>", "</b>");
        fString = doCode(fString, "[u]", "[/u]", "<u>", "</u>");
        fString = doCode(fString, "[i]", "[/i]", "<i>", "</i>");
        fString = doCode(fString, "[red]", "[/red]", "<font color=red>", "</font id=red>");
        fString = doCode(fString, "[green]", "[/green]", "<font color=green>", "</font id=green>");
        fString = doCode(fString, "[blue]", "[/blue]", "<font color=blue>", "</font id=blue>");
        fString = doCode(fString, "[white]", "[/white]", "<font color=white>", "</font id=white>");
        fString = doCode(fString, "[purple]", "[/purple]", "<font color=purple>", "</font id=purple>");
        fString = doCode(fString, "[yellow]", "[/yellow]", "<font color=yellow>", "</font id=yellow>");
        fString = doCode(fString, "[violet]", "[/violet]", "<font color=violet>", "</font id=violet>");
        fString = doCode(fString, "[brown]", "[/brown]", "<font color=brown>", "</font id=brown>");
        fString = doCode(fString, "[black]", "[/black]", "<font color=black>", "</font id=black>");
        fString = doCode(fString, "[pink]", "[/pink]", "<font color=pink>", "</font id=pink>");
        fString = doCode(fString, "[orange]", "[/orange]", "<font color=orange>", "</font id=orange>");
        fString = doCode(fString, "[gold]", "[/gold]", "<font color=gold>", "</font id=gold>");
        fString = doCode(fString, "[fly=left]", "[/fly=left]", "<marquee direction=left>", "</marquee>");
        fString = doCode(fString, "[fly=right]", "[/fly=right]", "<marquee direction=right>", "</marquee>");
        fString = doCode(fString, "[h1]", "[/h1]", "<h1>", "</h1>");
        fString = doCode(fString, "[h2]", "[/h2]", "<h2>", "</h2>");
        fString = doCode(fString, "[h3]", "[/h3]", "<h3>", "</h3>");
        fString = doCode(fString, "[h4]", "[/h4]", "<h4>", "</h4>");
        fString = doCode(fString, "[h5]", "[/h5]", "<h5>", "</h5>");
        fString = doCode(fString, "[h6]", "[/h6]", "<h6>", "</h6>");
        fString = doCode(fString, "[size=1]", "[/size=1]", "<font size=1>", "</font id=size1>");
        fString = doCode(fString, "[size=2]", "[/size=2]", "<font size=2>", "</font id=size2>");
        fString = doCode(fString, "[size=3]", "[/size=3]", "<font size=3>", "</font id=size3>");
        fString = doCode(fString, "[size=4]", "[/size=4]", "<font size=4>", "</font id=size4>");
        fString = doCode(fString, "[size=5]", "[/size=5]", "<font size=5>", "</font id=size5>");
        fString = doCode(fString, "[size=6]", "[/size=6]", "<font size=6>", "</font id=size6>");
        fString = doCode(fString, "[left]", "[/left]", "<div align=left>", "</div id=left>");
        fString = doCode(fString, "[center]", "[/center]", "<center>", "</center>");
        fString = doCode(fString, "[right]", "[/right]", "<div align=right>", "</div id=right>");
        fString = doCode(fString, "[code]", "[/code]", "<div style=BACKGROUND-COLOR:#eeeeee;><pre id=code>", "</pre id=code></div>");
        fString = doCode(fString, "[url]", "[/url]", "<a>", "</a>");
        fString = addLink(fString);
        return fString;
    }

    public string addLink(string fString)
    {
        int fOTagPos, fCTagPos;
        string link, fOTag, fCTag;
        fOTagPos = fString.IndexOf("<a>");
        fCTagPos = fString.IndexOf("</a>");
        while ((fOTagPos != -1) && (fCTagPos != -1))
        {
            link = fString.Substring(fOTagPos + 3, fCTagPos - fOTagPos - 3);
            fOTag = fString.Substring(fOTagPos, 2);
            fCTag = fString.Substring(fOTagPos + 2);
            link = " href=" + link + " target=_blank ";
            fString = String.Concat(fOTag, link, fCTag);
            fOTagPos = fString.IndexOf("<a>", fCTagPos + 3);
            fCTagPos = fString.IndexOf("</a>", fCTagPos + 3);
        }
        return fString;
    }
}